package org.dtrd.modules.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.dtrd.modules.service.entity.bean.PatientServiceDetail;
import org.dtrd.modules.service.entity.bean.PatientServiceItemKey;
import org.dtrd.modules.service.entity.bean.ServiceDetailItem;
import org.dtrd.modules.service.entity.po.DtrdRlPatientServiceDetail;
import org.dtrd.modules.service.entity.request.PatientServiceRequest;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author QR
 * @since 2022-01-06
 */
public interface IDtrdRlPatientServiceDetailService extends IService<DtrdRlPatientServiceDetail> {

    boolean saveOrUpdatePatientServiceDetail(PatientServiceRequest dto, String username);

    /**
     * 删除患者和服务详情关系
     */
    void removePatientServiceDetailRelation(Integer patientId, Integer packageId);

    boolean removePatientServiceDetail(Integer dataId);

    /**
     * 校验设置服务详情人的身份
     */
    boolean checkIdentity(Integer serviceDetailId, String post);

    /**
     * 查看服务包或服务套餐是否有关联患者
     * @param packageId packageId
     * @return 判断结果
     */
    boolean hasPackageRelateToPatient(Integer packageId);

    /**
     * 查看服务套餐是否有关联患者
     * @param serviceId serviceId
     * @return 判断结果
     */
    boolean hasServiceRelateToPatient(Integer serviceId);

    /**
     * 校验服务项 type 的有效性
     * @param type 1: 已完成, 0: 未完成
     * @return true 表示合格
     */
    boolean checkServiceItemType(Integer type);

    /**
     * 查询服务详情
     * @return
     */
    Map<PatientServiceItemKey, List<ServiceDetailItem>> getPatientServiceDetail(Integer patientId, Integer relationId);

    String getPatientPackageSchedule(Integer patientId, Integer packageId);

    /**
     * 保存患者评价
     */
    boolean savePatientEvaluation(Integer itemId, Integer evaluation, List<Integer> tagIds);
}
